//package com.game.service.windows;
//
//
//import java.awt.*;
//import java.awt.event.ActionEvent;
//import java.awt.event.ActionListener;
//import java.awt.event.WindowAdapter;
//import java.awt.event.WindowEvent;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.Date;
//import java.util.List;
//
///**
// *          ʾ
// *
// * @author Zhong
// *
// */
//public class DataView extends Frame   {
//
//	/**
//	 *
//	 */
//	private static final long serialVersionUID = 1L;
//
//	Client client = null;
//
//	private List<String> commList = new ArrayList<String>(); //       ö˿ں
//	private SerialPort serialPort = null; //    洮 ڶ
//
//	public SerialPort getSerialPort() {
//		return serialPort;
//	}
//
//	private Font font = new Font("΢   ź ", Font.BOLD, 25);
//
//	private Choice commChoice = new Choice(); //     ѡ
//	private Choice bpsChoice = new Choice(); //       ѡ
//	private Choice chairChoice = new Choice(); //   λ  ѡ
//	private Choice gameRoomChoice = new Choice(); //   Ϸ
//
//	private Button openSerialButton = new Button(" 򿪴   ");
//
//	private Button sendComDateUp = new Button("  ");
//	private Button sendComDateDown = new Button("  ");
//	private Button sendComDateLeft = new Button("  ");
//	private Button sendComDateRight = new Button("  ");
//
//	private Button sendComDateFire = new Button("    ");
//	private Button sendComDatePower = new Button("  ǿ");
//
//	private Button sendComDateCion = new Button("Ͷ  ");
//	private Button sendComDateOver = new Button("    ");
//	Image offScreen = null; //  ػ ʱ Ļ
//
//	//     window  icon
//	Toolkit toolKit = getToolkit();
//	// Image icon =
//	// toolKit.getImage(DataView.class.getResource("computer.png"));
//	Image iconRe = toolKit
//			.getImage("D:/BQD/IOT/JFrameDemo/config/ic_launcher.png");
//	SocketIot socketIot;
//	PingManager pingManager;
//	StringBuffer logSb = new StringBuffer();
//
//	ArrayList<String> logList = new ArrayList<String>();
//	SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
//			"yyyy-MM-dd HH:mm:ss,SS");
//
//	/**
//	 *   Ĺ  췽
//	 *
//	 * @param client
//	 */
//	public DataView(Client client) {
//		this.client = client;
//		// commList = SerialTool.findPort(); //      ʼ  ʱ  ɨ  һ    Ч
//		socketIot = new SocketIot(this);
//		pingManager = new PingManager("103.235.222.192", this);
//		new CountDownTimer(1000, 1000,
//				new CountDownTimer.ICountDownTimerListener() {
//
//					@Override
//					public void onTick(long millisUntilFinished) {
//						System.out.println("daojishi=" + millisUntilFinished);
//					}
//
//					@Override
//					public void onFinish() {
//						openLink();
//
//					}
//				});
//	}
//
//	/**
//	 *    ˵       ʾ      Label    ť              ¼
//	 */
//	public void dataFrame() {
//		this.setBounds(client.LOC_X, client.LOC_Y, client.WIDTH, client.HEIGHT);
//		this.setTitle(Define.APP_NAME + Client.SettingName);
//		this.setIconImage(iconRe);
//		this.setBackground(Color.white);
//		this.setLayout(null);
//
//		this.addWindowListener(new WindowAdapter() {
//			public void windowClosing(WindowEvent arg0) {
//				if (serialPort != null) {
//					//      ˳ ʱ رմ    ͷ   Դ
//					SerialTool.closePort(serialPort);
//				}
//				System.exit(0);
//			}
//
//		});
//		List<GameInfoDetailsIni> roomList = Client.getClient().getRoomList();
//		for (GameInfoDetailsIni s : roomList) {
//			commList.add(s.chuankouchoose);
//		}
//		//   Ӵ   ѡ  ѡ
//		commChoice.setBounds(50, 400, 100, 100);
//
//		//     Ƿ  п  ô  ڣ        ѡ
//		if (commList == null || commList.size() < 1) {
//			addLogList("Code#1007;û          Ч   ڣ ");
//			// JOptionPane.showMessageDialog(null, "û          Ч   ڣ ", "    ",
//			// JOptionPane.INFORMATION_MESSAGE);
//		} else {
//
//			for (String s : commList) {
//				commChoice.add(s);
//			}
//		}
//		add(commChoice);
//
//		//   Ӳ     ѡ
//		bpsChoice.setBounds(180, 400, 100, 100);
//		bpsChoice.add("115200");
//		// bpsChoice.add("19200");
//
//		add(bpsChoice);
//
//		chairChoice.setBounds(200, 50, 150, 100);
//		chairChoice.add("  ѡ    λ  ");
//		chairChoice.add("1");
//		chairChoice.add("2");
//		chairChoice.add("3");
//		chairChoice.add("4");
//		chairChoice.add("5");
//		chairChoice.add("6");
//		chairChoice.add("7");
//		chairChoice.add("8");
//		chairChoice.add("9");
//		chairChoice.add("10");
//		add(chairChoice);
//
//		// Label gameRoom = new Label("");
//
//		gameRoomChoice.setBounds(50, 50, 150, 100);
//
//		if (roomList == null || roomList.size() < 1) {
//			addLogList("ȱʧ ļ Setting.ini");
//
//		} else {
//			if (Client.getClient().isAuto == false) {
//				gameRoomChoice.add("  ѡ    Ϸ    ");//  ֶ   ¼    Ҫ
//			}
//			for (GameInfoDetailsIni game : roomList) {
//				gameRoomChoice.add(game.gamename);
//				addLogList("        :" + game.toString());
//			}
//		}
//		add(gameRoomChoice);
//
//		//   Ӱ ť
//		int addLength = Client.getClient().AddLength - 100;
//		//   Ӱ ť
//		Utils.setButtonStely(sendComDateUp, 100, addLength + 100, 50, 50);
//		add(sendComDateUp);
//		//   Ӱ ť
//		Utils.setButtonStely(sendComDateDown, 100, addLength + 200, 50, 50);
//		add(sendComDateDown);
//		//   Ӱ ť
//		Utils.setButtonStely(sendComDateLeft, 50, addLength + 150, 50, 50);
//		add(sendComDateLeft);
//		//   Ӱ ť
//		Utils.setButtonStely(sendComDateRight, 150, addLength + 150, 50, 50);
//		add(sendComDateRight);
//
//		Utils.setButtonStely(sendComDateFire, 250, addLength + 100, 50, 50);
//		add(sendComDateFire);
//		Utils.setButtonStely(sendComDatePower, 250, addLength + 200, 50, 50);
//		add(sendComDatePower);
//
//		Utils.setButtonStely(sendComDateCion, 300, addLength + 100, 50, 50);
//		add(sendComDateCion);
//		Utils.setButtonStely(sendComDateOver, 300, addLength + 200, 50, 50);
//		add(sendComDateOver);
//
//		sendComDateUp.addActionListener(new ActionListener() {
//
//			@Override
//			public void actionPerformed(ActionEvent e) {
//				sendCommand(0x00);
//
//			}
//		});
//
//		sendComDateDown.addActionListener(new ActionListener() {
//
//			@Override
//			public void actionPerformed(ActionEvent e) {
//				sendCommand(0x01);
//			}
//		});
//		sendComDateLeft.addActionListener(new ActionListener() {
//
//			@Override
//			public void actionPerformed(ActionEvent e) {
//				sendCommand(0x02);
//
//			}
//		});
//		sendComDateRight.addActionListener(new ActionListener() {
//
//			@Override
//			public void actionPerformed(ActionEvent e) {
//				sendCommand(0x03);
//
//			}
//		});
//		sendComDatePower.addActionListener(new ActionListener() {
//
//			@Override
//			public void actionPerformed(ActionEvent e) {
//				sendCommand(0x04);
//
//			}
//		});
//		sendComDateFire.addActionListener(new ActionListener() {
//
//			@Override
//			public void actionPerformed(ActionEvent e) {
//				sendCommand(0x05);
//
//			}
//		});
//		sendComDateCion.addActionListener(new ActionListener() {
//
//			@Override
//			public void actionPerformed(ActionEvent e) {
//				sendCommand(0x07);
//
//			}
//		});
//
//		sendComDateOver.addActionListener(new ActionListener() {
//
//			@Override
//			public void actionPerformed(ActionEvent e) {
//				sendCommand(0x09);
//
//			}
//		});
//
//		//   Ӵ򿪴  ڰ ť
//		openSerialButton.setBounds(50, 600, 200, 50);
//		openSerialButton.setBackground(Color.lightGray);
//		openSerialButton.setFont(new Font("΢   ź ", Font.BOLD, 20));
//		openSerialButton.setForeground(Color.darkGray);
//		add(openSerialButton);
//
//		//   Ӵ򿪴  ڰ ť   ¼
//		openSerialButton.addActionListener(new ActionListener() {
//
//			public void actionPerformed(ActionEvent e) {
//				openLink();
//			}
//		});
//
//		this.setResizable(false);
//
//		new Thread(new RepaintThread()).start(); //     ػ  ߳
//
//	}
//
//	/**
//	 *              Ԫ
//	 */
//	public void paint(Graphics g) {
//
//		Color c = g.getColor();
//		g.setFont(new Font("΢   ź ", Font.BOLD, 15));
//		g.setColor(Color.GRAY);
//
//		//    ǰ ж  Ƿ Ҫ      ,  ʾ    ȥ       ǰ
//		int lineNum = logList.size();
//		for (int i = 0; i < lineNum; i++) {
//			g.drawString(logList.get(i), 500, 50 + i * 17);
//		}
//		if (50 + lineNum * 17 > Client.HEIGHT) {
//			logList.clear();
//		}
//		g.setColor(Color.RED);
//		g.drawString(delaytime, 400, 50);
//
//	}
//
//	/**
//	 * ˫   巽ʽ ػ      Ԫ
//	 */
//	public void update(Graphics g) {
//		if (offScreen == null)
//			offScreen = this.createImage(Client.WIDTH, Client.HEIGHT);
//		Graphics gOffScreen = offScreen.getGraphics();
//		Color c = gOffScreen.getColor();
//		gOffScreen.setColor(Color.white);
//		gOffScreen.fillRect(0, 0, Client.WIDTH, Client.HEIGHT); //  ػ
//		this.paint(gOffScreen); //  ػ     Ԫ
//		gOffScreen.setColor(c);
//		g.drawImage(offScreen, 0, 0, null); //    »  õĻ           ԭ
//
//	}
//
//	/*
//	 *  ػ  ̣߳ ÿ  30     ػ һ Σ
//	 */
//	private class RepaintThread implements Runnable {
//		public void run() {
//			while (true) {
//				//      ػ
//				repaint();
//
//				try {
//					Thread.sleep(30);
//				} catch (InterruptedException e) {
//					String err = ExceptionWriter.getErrorInfoFromException(e);
//					addLogList("Code#1008;" + err);
//					// JOptionPane.showMessageDialog(null, err, "    ",
//					// JOptionPane.INFORMATION_MESSAGE);
//					System.exit(0);
//				}
//			}
//		}
//
//	}
//
//	public void find() {
//		if (Client.isAuto) {
//			return;
//		}
//		// ɨ    ô
//		commList = SerialTool.findPort();
//		if (commList != null && commList.size() > 0) {
//
//			//      ɨ 赽 Ŀ  ô
//			for (String s : commList) {
//
//				//  ô      Ƿ  Ѵ  ڣ   ʼĬ  Ϊ     ڣ   commList    ڵ   commChoice ﲻ   ڣ       ӣ
//				boolean commExist = false;
//
//				for (int i = 0; i < commChoice.getItemCount(); i++) {
//					if (s.equals(commChoice.getItem(i))) {
//						//   ǰɨ 赽 Ĵ      Ѿ  ڳ ʼɨ  ʱ
//						commExist = true;
//						break;
//					}
//				}
//
//				if (commExist) {
//					//   ǰɨ 赽 Ĵ      Ѿ  ڳ ʼɨ  ʱ   ڣ ֱ ӽ     һ  ѭ
//					continue;
//				} else {
//					//              ´          ô        б
//					commChoice.add(s);
//				}
//			}
//
//			//  Ƴ  Ѿ      õĴ
//			for (int i = 0; i < commChoice.getItemCount(); i++) {
//
//				//  ô    Ƿ   ʧЧ    ʼĬ  Ϊ Ѿ ʧЧ    commChoice    ڵ   commList ﲻ   ڣ    Ѿ ʧЧ
//				boolean commNotExist = true;
//
//				for (String s : commList) {
//					if (s.equals(commChoice.getItem(i))) {
//						commNotExist = false;
//						break;
//					}
//				}
//
//				if (commNotExist) {
//					// System.out.println("remove" +
//					// commChoice.getItem(i));
//					commChoice.remove(i);
//				} else {
//					continue;
//				}
//			}
//
//		} else {
//			//    ɨ 赽  commListΪ գ    Ƴ        д
//			commChoice.removeAll();
//		}
//	}
//
//	/**
//	 *    ڲ     ʽ    һ     ڼ
//	 *
//	 * @author zhong
//	 *
//	 */
//	private class SerialListener implements SerialPortEventListener {
//
//		/**
//		 *      ص  Ĵ    ¼
//		 */
//		public void serialEvent(SerialPortEvent serialPortEvent) {
//			// System.out.println(serialPortEvent.getEventType() + "");
//
//			switch (serialPortEvent.getEventType()) {
//
//				case SerialPortEvent.BI: // 10 ͨѶ ж
//					addLogList("Code#1009; 봮   豸ͨѶ ж ");
//					// JOptionPane.showMessageDialog(null, " 봮   豸ͨѶ ж ", "    ",
//					// JOptionPane.INFORMATION_MESSAGE);
//					break;
//
//				case SerialPortEvent.OE: // 7   λ
//					addLogList("Code#1009;7   λ           ");
//					break;
//				case SerialPortEvent.FE: // 9 ֡
//					addLogList("Code#1009;9 ֡    ");
//					break;
//				case SerialPortEvent.PE: // 8   żУ
//					addLogList("Code#1009;8   żУ     ");
//					break;
//				case SerialPortEvent.CD: // 6  ز
//					addLogList("Code#1009;6  ز    ");
//					break;
//				case SerialPortEvent.CTS: // 3
//					addLogList("Code#1009;3              ");
//					break;
//				case SerialPortEvent.DSR: // 4           ׼
//					addLogList("Code#1009;4           ׼      ");
//					break;
//				case SerialPortEvent.RI: // 5     ָʾ
//					addLogList("Code#1009;5     ָʾ");
//					break;
//				case SerialPortEvent.OUTPUT_BUFFER_EMPTY: // 2
//					addLogList("Code#1009;2               ");
//					break;
//
//				case SerialPortEvent.DATA_AVAILABLE: // 1    ڴ  ڿ
//
//					// System.out.println("found data");
//					byte[] data = null;
//
//					try {
//						if (serialPort == null) {
//							addLogList("Code#1001;   ڶ   Ϊ գ     ʧ ܣ ");
//							// JOptionPane.showMessageDialog(null, "   ڶ   Ϊ գ     ʧ ܣ ",
//							// "    ", JOptionPane.INFORMATION_MESSAGE);
//						} else {
//							data = SerialTool.readFromPort(serialPort); //   ȡ   ݣ      ֽ
//							String log = Utils.bytes2HexString(data, data.length);
//							Date date = new Date(System.currentTimeMillis());
//							String timeLog = simpleDateFormat.format(date);
//							// Util.d("      Ϣ", timeLog + ";" + log);
//
//							sbCreat.append(log);
//							String sbStr = sbCreat.toString();
//							int index = sbStr.indexOf("0000003F");
//
//							int n = (sbStr.length() - index) / 250;
//							// System.out.println("   " + index + "    :" + n);
//
//							for (int i = 0; i < n; i++) {
//								String list = sbCreat.toString().substring(
//										index + 250 * i, index + 250 * (i + 1));
////							System.out.println("    ," + i + ":"
////									+ list.substring(44, 44 + 12));
//								System.out.println("    ," + i + ":"
//										+ list);
//							}
//
//							if (n > 0) {
//								// System.err.println("ɾ      :"
//								// + sbStr.substring(0, index + 250 * n));
//								sbCreat.delete(0, index + 250 * n);
//							}
//
//							//
//							check_com_data_stringEnd(log, log.length());
//
//							// TODO
//
//						}
//
//					} catch (ReadDataFromSerialPortFailure
//							 | SerialPortInputStreamCloseFailure e) {
//						addLogList("Code#1002;" + e);
//						// JOptionPane.showMessageDialog(null, e, "    ",
//						// JOptionPane.INFORMATION_MESSAGE);
//						System.exit(0); //       ȡ    ʱ  ʾ      Ϣ   ˳ ϵͳ
//					}
//
//					break;
//
//			}
//
//		}
//	}
//
//	StringBuffer sbCreat = new StringBuffer();
//
//	boolean creatFlag = false;
//	static int ERROR = 0x00;
//	static int nIndex = 0;
//
//	public boolean check_com_data_stringEnd(String data, int len) {
//
//		return true;
//	}
//
//	private void sendComData(String com_data) {
//		String addCoinCmdMain = com_data.substring(10, 12);// Ͷ
//		// String addCoinChairID = com_data.substring(8, 10);// Ͷ ҵ
//		// String addCoinStatus = com_data.substring(6, 8);// Ͷ  ״̬
//		// String addCoinNum = com_data.substring(14, 18);// ʣ  Ͷ
//
//		// 88 00 04 01 01 07 01000000 85 //  Ϸְ ť 7
//		if (addCoinCmdMain.equals("07")) {
//
//			Utils.writeLog("AddCoin" + Client.SettingName + ".log", com_data);
//		}
//
//		Date date = new Date(System.currentTimeMillis());
//		String timeLog = simpleDateFormat.format(date);
//
//		addLogList("   ڷ   :" + timeLog + ";" + com_data);
//
//		WwjMacSend cmd = new WwjMacSend();
//		cmd.m_MachNo = SocketIot.getMachNo();
//		cmd.byteArray = Utils.hexStringToBytes(com_data);
//		socketIot.onCreateSendDate(NetDefine.MDM_GF_DOLL,
//				NetDefine.SUB_GF_DOLL_SEND_BACK, cmd);
//
//	}
//
//	private void sendCommand(int cmd) {
//
//		try {
//			String chairNum = chairChoice.getSelectedItem();
//			if (chairNum.equals("  ѡ    λ  ")) {
//				addLogList("  ѡ    Ҫ        λ  ");
//				return;
//			}
//
//			int chair = Integer.parseInt(chairNum);
//			byte[] testComDate = Utils.onCreateComDate(00, 04, chair, cmd, 01,
//					00);
//			SerialTool.sendToPort(serialPort, testComDate);
//			System.out.println("    ָ  " + Arrays.toString(testComDate));
//		} catch (SendDataToSerialPortFailure e1) {
//			e1.printStackTrace();
//		} catch (SerialPortOutputStreamCloseFailure e1) {
//			e1.printStackTrace();
//		} catch (Exception e1) {
//			e1.printStackTrace();
//		}
//
//	}
//
//	private int numLine = 0;
//	private final static SimpleDateFormat sdf = new SimpleDateFormat(
//			"yyyy-MM-dd HH:mm:ss");
//
//	private void addLogList(String log) {
//		String bianHao = "";
//		numLine++;
//		//      ݱ  Ư
//		if (numLine >= 10) {
//			bianHao = "0" + numLine;
//		} else {
//			bianHao = "00" + numLine;
//		}
//
//		logList.add(bianHao + "#" + log);
//		// System.err.println(sdf.format(System.currentTimeMillis()) + ";"
//		// + bianHao + "#" + log);
//	}
//
//	public void openLink() {
//		if (!openSocket()) {
//			addLogList("   ó        ϵ   ݰ          ޹ ˾");
//			return;
//
//		}
//
//		//   ȡ
//		String commName = commChoice.getSelectedItem();
//		//   ȡ
//		String bpsStr = bpsChoice.getSelectedItem();
//
//		//   鴮       Ƿ  ȡ  ȷ
//		if (commName == null || commName.equals("")) {
//			addLogList("Code#1003;û          Ч   ڣ ");
//			// JOptionPane.showMessageDialog(null, "û          Ч   ڣ ", "    ",
//			// JOptionPane.INFORMATION_MESSAGE);
//		} else {
//			//   鲨     Ƿ  ȡ  ȷ
//			if (bpsStr == null || bpsStr.equals("")) {
//				addLogList("Code#1004;     ʻ ȡ    ");
//				// JOptionPane.showMessageDialog(null, "     ʻ ȡ    ", "    ",
//				// JOptionPane.INFORMATION_MESSAGE);
//			} else {
//				//              ʾ   ȡ  ȷʱ
//				int bps = Integer.parseInt(bpsStr);
//				try {
//
//					//   ȡָ   ˿          ʵĴ  ڶ
//					serialPort = SerialTool.openPort(commName, bps);
//					//  ڸô  ڶ       Ӽ
//					SerialTool.addListener(serialPort, new SerialListener());
//
//					addLogList("Code#1005;   ڼ    ɹ    Ժ   ʾ      ݣ ");
//					//      ɹ       ʾ
//					// JOptionPane.showMessageDialog(null, "     ɹ    Ժ   ʾ      ݣ ",
//					// "  ʾ", JOptionPane.INFORMATION_MESSAGE);
//
//					//
//
//				} catch (SerialPortParameterFailure | NotASerialPort
//						 | NoSuchPort | PortInUse | TooManyListeners e1) {
//					//         ʱʹ  һ  Dialog  ʾ    Ĵ     Ϣ
//					addLogList("Code#1006;" + e1);
//					// JOptionPane.showMessageDialog(null, e1, "    ",
//					// JOptionPane.INFORMATION_MESSAGE);
//				}
//			}
//		}
//	}
//
//	private GameInfoDetailsIni gameInfo = null;
//
//	public GameInfoDetailsIni getGameInfo() {
//		return gameInfo;
//	}
//
//	public boolean openSocket() {
//		String roomName = gameRoomChoice.getSelectedItem();
//
//		if (roomName.equals("  ѡ    Ϸ    ")) {
//			addLogList("      ѡ    Ϸ    ==================================");
//			return false;
//
//		}
//
//		try {
//			gameInfo = Client.getClient().chooseRoom(roomName);
//
//		} catch (Exception e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//
//		if (gameInfo == null) {
//			addLogList("   ü  ش   ,    ֹͣ    ==============================");
//			return false;
//		}
//		pingManager.pingNewIp(gameInfo.address);
//
//		//  ڼ    ɹ ֮   ٽ
//		String strHost = gameInfo.address;
//		int dport = Integer.parseInt(gameInfo.Port);
//		socketIot.StartWokring(serialPort, strHost, dport);
//		addLogList("            " + strHost + ":" + dport);
//		return true;
//	}
//
//	String delaytime = "";
//
//	@Override
//	public void onDelay(String delaytime) {
//		this.delaytime = "ping:" + delaytime + "ms";
//		if (SocketIot.getMachNo() != 0) {
//			WwjMacLink cmd = new WwjMacLink();
//			cmd.m_MachNo = SocketIot.getMachNo(); //
//			cmd.m_Status = 1;
//			cmd.m_boolFirst = 0;//  Ƿ Ϊ ״
//			cmd.m_delaytime = Integer.parseInt(delaytime);//   ʱ
//			socketIot.onCreateSendDate(NetDefine.MDM_GF_DOLL,
//					NetDefine.SUB_GF_DOLL_HEART, cmd);
//			// addLogList("  ʱ:" + delaytime + "ms");
//		}
//
//	}
//
//	@Override
//	public void onError(String e) {
//		delaytime = "460ms";
//	}
//
//	@Override
//	public void printLog(String log) {
//		addLogList(log);
//
//	}
//
//}
